package com.snow.jvm;

/**
 * @类名称：JVM第三节
 * @类描述：
 * @author: bingHeng
 * @Date 2019.04.13
 * @Version: 1.0
*/
public class MyHeap {

    /**
     * 堆内存调优简介：
     * -Xms：设置初始分配大小，默认为物理内存的 "1/64"
     * -Xmx: 最大分配内存，默认为物理内存的 "1/4"
     * -XX:+PrintGCDetails: 输出详细的GC处理日志
     * -XX:+HeapDumpOnOutOfMemoryError  : OOM时导出堆到hprof文件。
     */

    public static void main(String[] args) {

        // 返回Java 虚拟机试图使用的最大内存量 -Xmx
        long maxMemory = Runtime.getRuntime().maxMemory();

        // 返回Java 虚拟机中的内存总量 -Xms
        long totalMemory = Runtime.getRuntime().totalMemory();

        System.out.println("MAX_MEMORY = " + maxMemory + "(字节)、" + (maxMemory / 1024 / 1024) + "MB");
        System.out.println("TOTAL_MEMORY = " + totalMemory + "(字节)、" + (totalMemory / 1024 / 1024) + "MB");

        /**
         * MAT(Eclipse Memory Analyzer):
         *  分析dump文件，快速定位内存泄漏；
         *  获得堆中对象的统计数据
         *  获得对象相互引用的关系
         *  采取树形展现对象间相互引用的情况
         *  支持使用OQL语言来查询对象信息
         */

    }
}
